import type { Item } from "@/components/DialogRow";
import type { AppInfoType, PixelType } from "@/typings/nativeModuletype";
import type { DeptTreeType } from "@/typings/platform";
import type { DeviceInfoType } from "@/utils/getDeviceInfo";

/** 页面状态 */
export type StateType = {
  /** 设备信息 */
  deviceInfo: DeviceInfoType | null;

  /** app版本信息 */
  appInfo: AppInfoType | null;

  /** 分辨率信息 */
  pixelInfo: PixelType | null;

  /** 当前激活的选项 */
  activeStep: number;

  /** modelBox显隐 */
  modalBoxVisible: boolean;

  /** 选中的机构数据 */
  dept: DeptTreeType | null;
  /** 机构数据错误提示 */
  deptErrTip: string;

  /** 功能区域 */
  localhost: Item | null;
  /** 功能区域错误提示 */
  localhostErrTip: string;

  /** 设备厂家 */
  brand: Item | null;
  /** 设备厂家错误提示 */
  brandErrTip: string;

  /** 尺寸 */
  size: Item | null;
  /** 尺寸错误提示 */
  sizeErrTip: string;

  /** (单面/双面) */
  face: Item | null;
  /** (单面/双面)错误提示 */
  faceErrTip: string;

  /** 播放方式 */
  playMode: Item | null;
  /** 规格型号错误提示 */
  playModeErrTip: string;

  /** 设备编号 */
  code: string;
  /** 提示文本 */
  resultText: string;
};

/** 网格菜单类型 */
export type GridMenuType = {
  label: string;
  title: string;
  placeholder?: string;
  items: Item[];
  valueKey: keyof Pick<StateType, "brand" | "playMode" | "localhost" | "size" | "face">;
  errorTipKey: keyof Pick<
    StateType,
    "brandErrTip" | "playModeErrTip" | "localhostErrTip" | "sizeErrTip" | "faceErrTip"
  >;
}[];
